package com.i72.basic.annotation;

import com.i72.basic.init.AOPInit;
import com.i72.basic.init.AOPRegistrar;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.Import;

import java.lang.annotation.*;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import({AOPRegistrar.class, AOPInit.class})
public @interface AOPClassName {
    /**
     * 需要被拦截的类
     * @return
     */
    Class target();

    /**
     * 事件类，用来处理AOP的各种事件一般为接口
     * 必须实现自AOPInvoke
     * @return
     */
    Class invoke();

    /**
     * 是否开启AOP环绕，开启后before自动失效，并且需要手动调用方法的执行（Around需要遵照AOP的基本玩法）
     * @return
     */
    boolean around() default false;
}
